<?php
namespace app\index\controller;

use app\index\model\User as UserModel;
use think\Controller;

class User extends Controller
{
    //新增用户
    // public function add()
    // {
    //     $user = new UserModel;
    //     $user->nickname = '流年自动化';
    //     $user->email = 'thinkphp@qq.com';
    //     $user->birthday = '1997-03-05';
    //     if ($user->save()) {
    //         return '用户[' . $user->nickname . ':' . $user->id . ' ]新增成功';
    //     } else {
    //         return $user->getError();
    //     }
    // }

    // //新增用户数据(另一种方法)
    // public function add1()
    // {
    //     $user["nickname"] = '看云';
    //     $user["email"] = 'kancloud@qq.com';
    //     $user['birthday'] = strtotime('2015-04-02');
    //     if ($result = UserModel::create($user)) {
    //         return '用户[' . $result->nickname . ':' . $result->id . ' ]新增成功';
    //     } else {
    //         return '新增出错';
    //     }
    // }

    // //批量新增用户数据
    // public function addList()
    // {
    //     $user = new UserModel;
    //     $list = [
    //         ['nickname' => '张三', 'email' => 'zhansan@qq.com', 'birthday' => strtotime('2018-02-24')],
    //         ['nickname' => '兰陵王', 'email' => 'lanlingwang@qq.com', 'birthday' => strtotime('2016-09-24')],
    //         ['nickname' => '荆轲', 'email' => 'jinke@qq.com', 'birthday' => strtotime('2017-11-24')],
    //     ];
    //     if ($user->saveAll($list)) {
    //         return '用户批量新增成功';
    //     } else {
    //         return $user->getError();
    //     }
    // }

    // //查询数据
    // public function read($id = '')
    // {
    //     $user = UserModel::get($id);
    //     if ($user != null) {
    //         echo $user->nickname . '<br/>';
    //         echo $user->email . '<br/>';
    //         echo date('Y/m/d', $user->birthday) . '<br/>';
    //     } else {
    //         return "没有查询到相关用户";
    //     }
    // }

    // //根据email读取数据
    // public function readByEmail($email = '')
    // {
    //     $user = UserModel::getByEmail($email);
    //     if ($user != null) {
    //         echo $user->nickname . '<br/>';
    //         echo $user->email . '<br/>';
    //         echo date('Y/m/d', $user->birthday) . '<br/>';
    //     } else {
    //         return "没有查询到相关用户";
    //     }
    // }

    // //复杂的查询
    // public function readComplex()
    // {
    //     $user = UserModel::where('nickname', '流年')->find();
    //     echo $user->nickname . '<br>';
    //     echo $user->email . '<br>';
    //     echo date('Y/m/d', $user->birthday) . '<br/>';
    // }

    // //数据列表
    // public function readall()
    // {
    //     $list = UserModel::all();
    //     foreach ($list as $user) {
    //         echo $user->nickname . '<br/>';
    //         echo $user->email . '<br/>';
    //         echo date('Y/m/d', $user->birthday) . '<br/>';
    //         echo '·················<br/>';
    //     }
    // }

    // //数据列表条件查询
    // public function readallByStatus()
    // {
    //     $list = UserModel::all(['status' => 1]);
    //     foreach ($list as $user) {
    //         echo $user->nickname . '<br/>';
    //         echo $user->email . '<br/>';
    //         echo date('Y/m/d', $user->birthday) . '<br>';
    //         echo '·······················<br>';
    //     }
    // }

    // //条件查询
    // public function readByCondition()
    // {
    //     $list = UserModel::where('id', '<', 10)->select();
    //     foreach ($list as $user) {
    //         echo $user->nickname . '<br>';
    //         echo $user->email . '<br>';
    //         echo $user->birthday . '<br/>';
    //         echo $user->user_birthday . '<br/>';
    //         echo '···················<br/>';
    //     }
    // }

    // //更新数据
    // public function update($id)
    // {
    //     $user = UserModel::get($id);
    //     $user->nickname = '刘晨';
    //     $user->email = 'liu21st@gmial.com';
    //     if (false !== $user->save()) {
    //         return '更新用户成功';
    //     } else {
    //         return $user->getError();
    //     }
    // }

    // //删除数据
    // public function delete($id)
    // {
    //     $user = UserModel::get($id);
    //     if ($user) {
    //         $user->delete();
    //         return '删除用户成功';
    //     } else {
    //         return '删除的用户不存在';
    //     }
    // }

    // //查询范围
    // public function queryByScope()
    // {
    //     $list = UserModel::scope('email, status')->select();
    //     foreach ($list as $user) {
    //         echo $user->nickname . '<br/>';
    //         echo $user->email . '<br/>';
    //         echo $user->birthday . '<br/>';
    //         echo '·································<br/>';
    //     }
    // }

    // //链式查询   没走通
    // public function queryLineOperation()
    // {
    //     $list = UserModel::scope('email, status')
    //         ->scope(function ($query) {
    //             $query->order('id', 'desc');
    //         })->select();
    //     foreach ($list as $user) {
    //         echo $user->nickname . '<br/>';
    //         echo $user->email . '<br/>';
    //         echo $user->birthday . '<br/>';
    //         echo $user->status . '<br/>';
    //         echo '·································<br/>';
    //     }
    // }

    public function create()
    {
        return view();
        // return view('user/create');
    }

    // public function add()
    // {
    //     $user = new UserModel;

    //     //allowField(true)是为了避免表单令牌验证的字段被写入数据表
    //     if ($user->allowField(true)->validate(true)->save(input('post.'))) {
    //         return '用户[ ' . $user->nickname . ':' . $user->id . "]新增成功";
    //     } else {
    //         return $user->getError();
    //     }
    // }

    //在控制器里验证
    // public function add()
    // {
    //     $data = input('post.');
    //     //数据验证
    //     $result = $this->validate($data, 'User');
    //     if (true !== $result) {
    //         return $result;
    //     }
    //     $user = new UserModel;
    //     //数据保存
    //     $user->allowField(true)->save($data);
    //     return '用户[ ' . $user->nickname . ':' . $user->id . ' ]新增成功';
    // }

    //个别验证
    // public function add()
    // {
    //     $data = input('post .');
    //     //验证birthday是否有效的日期
    //     $check = Validate::is($data['birthday'], 'date');
    //     if (false === $check) {
    //         return 'birthday日期格式非法';
    //     }
    //     $user = new UserModel;
    //     return '用户[ ' . $user->nickname . ':' . $user->id . ' ]新增成功';
    // }

    // public function test()
    // {
    //     $user = User::get(5);
    //     echo $user->nickname;
    //     dump($user->books);
    //     $user->books()->where('name', 'thinkphp')->find();
    // }

    //数据库关联操作

    //关联新增数据库  一对一
    // public function add()
    // {
    //     $user = new UserModel;
    //     $user->name = 'thinkphp';
    //     $user->password = '123456';
    //     $user->nickname = '流年';
    //     if ($user->save()) {
    //         //写入关联数据
    //         $profile = new Profile;
    //         $profile->truename = '刘晨';
    //         $profile->birthday = '1977-03-05';
    //         $profile->address = '中国上海';
    //         $profile->email = 'thinkphp@qq.com';
    //         $user->profile()->save($profile);
    //         return '用户新增成功';
    //     } else {
    //         return $user->getError();
    //     }
    // }

    //关联删除
    // public function delete($id)
    // {
    //     $user = UserModel::get($id);
    //     if ($user->delete()) {
    //         $user->profile()->delete();
    //     } else {
    //         return $user->getError();
    //     }
    // }

    //关联新增 一对多
    // public function addBook()
    // {
    //     $user = UserModel::get(1);
    //     $book = new Book;
    //     $book->title = 'ThinkPHP5快速入门';
    //     $book->publish_time = '2016-05-16';
    //     $user->books()->save($book);
    //     return '添加Book成功';
    // }

    // public function addBook()
    // {
    //     $user = UserModel::get(8);
    //     $books = [
    //         ['title' => 'Java快速入门', 'publish_time' => '2016-05-06'],
    //         ['title' => 'Java开发手册', 'publish_time' => '2016-03-05'],
    //     ];
    //     $user->books()->saveAll($books);
    //     return '添加Book成功';
    // }

    //关联查询
    // public function read()
    // {
    //     $user = UserModel::get(7, 'books');
    //     $books = $user->books;
    //     foreach ($books as $book) {
    //         echo $book->title . '<br/>';
    //         echo $book->publish_time . '<br/>';
    //         echo '·····················<br/>';
    //     };
    //     // dump($books);
    // }

    //过滤查询
    // public function read()
    // {
    //     $user = UserModel::get(1);
    //     //获取状态为1的关联数据
    //     $books = $user->books()->where('status', 1)->select();
    //     dump($books);
    //     //获取作者写的某本书
    //     $book = $user->books()->getByTitle('ThinkPHP5快速入门');
    //     dump($book);
    // }

    // public function read()
    // {
    //     //查询写过书的作者列表
    //     $user = UserModel::has('books')->select();
    //     //查询写过三本书的作者
    //     $user = UserModel::has('books', '>=', 3)->select();
    //     //查询写过ThinkPHP5快速入门的作者
    //     $user = UserModel::hasWhere('books', ['title' => 'THinkPHP5快速入门'])->select();
    // }

    //关联数据更新
    // public function update($id)
    // {
    //     $user = UserModel::get($id);
    //     $book = $user->books()->getByTitle('ThinkPHP5开发手册');
    //     $book->title = 'ThinkPHP5快速入门';
    //     $book->save();
    // }

    //通过查询构造器更新
    // public function update($id) {
    //     $user = UserModel::get($id);
    //     $user->books()->where('title', 'ThinkPHP快速入门')->update(['tile', 'java开发手册']);
    // }

    //关联删除

    // public function delete1($id)
    // {
    //     $user = UserModel::get($id);
    //     if ($user->delete()) {
    //         //删除所有的关联数据
    //         $user->books()->delete();
    //     }
    // }

    //多对多关联

    // public function add()
    // {
    //     $user = UserModel::getByNickname('张三');
    //     //新增用户角色  并自动写入枢纽表
    //     $user->roles()->save(['name' => 'editor', 'title' => '编辑']);
    //     return '用户角色新增成功';
    // }

    // public function add()
    // {
    //     $user = UserModel::getByNickname('张三');
    //     //给当前用户新增多个角色
    //     $user->roles()->saveAll([
    //         ['name' => 'leader', 'title' => '领导'],
    //         ['name' => 'admin', 'title' => '管理员'],
    //     ]);
    // }

    //关联新增数据
    // public function add()
    // {
    //     $user = UserModel::getByNickname('张三');
    //     $role = Role::getByName('editor');
    //     //添加枢纽标数据
    //     $user->roles()->attach($role);
    //     return '用户角色添加成功';
    // }
    //关联删除  删除枢纽表
    // public function delete()
    // {
    //     $user = UserModel::get(5);
    //     $role = Role::getByName('admin');
    //     //删除关联数据 但不删除关联数据模型
    //     $user->roles()->detach($role);
    //     return '用户角色删除成功';
    // }

    // public function delete()
    // {
    //     $user = UserModel::getByNickname('张三');
    //     $role = Role::getByName('editor');
    //     //删除关联数据 并同时删除关联数据模型
    //     $user->roles()->detach($role, true);
    //     return '用户角色删除成功';
    // }

    //关联查询
    //获取张三所有角色
    // public function read()
    // {
    //     $user = UserModel::getByNickname('张三');
    //     dump($user->roles);
    // }

    //模型输出
    public function read($id = '')
    {
        $user = UserModel::get($id);
        dump($user->toArray());
    }

    public function read1($id = '')
    {
        $user = UserModel::get($id);
        //隐藏属性
        dump($user->hidden(['create_time', 'update_time'])->toArray());
        //指定属性
        dump($user->visible(['id', 'nickname', 'email'])->toArray());
        //追加属性
        dump($user->append(['user_status'])->toArray());
    }

    //输出JSON

    public function read2($id = '')
    {
        $user = UserModel::get($id);
        echo $user->toJson();
    }

}
